从 CoT 到 Agent 推理体系
CoT 之后的推理体系分成三条路线:提高单链可靠性、把推理与行动交错,以及搜索多条候选路径。
从 CoT 到 Agent 推理体系:三条分叉,不是一条直线
阅读提示 本笔记面向已经知道 CoT 是什么、正在学 Agent 架构的读者。它不重复讲 CoT 的用法(那部分见 CoT 思维链),而是回答一个架构问题:今天 Agent 里的规划、工具、记忆这些模块,各自是从哪条研究线上长出来的?
读完应该能做到:看到一个新范式的名字,立刻判断它属于哪一支、在解决哪个层面的问题。
相关笔记:ReAct 范式(方向三的代表作,单独展开)、Agent概念(组件视角)、Agent架构设计-lang系框架(工程分层)。
⚠️ = 常见陷阱 🆚 = 对比辨析 💡 = 机制或选择建议
目录
- 一、为什么这段背景值得单独理清?
- 二、起点其实不是 CoT
- 三、CoT 真正的转折点意义是什么?
- 四、三条分叉分别在补什么短板?
- 五、为什么方向三才是 Agent 的分水岭?
- 六、这些分支如何汇流成 Agent?
- 七、2024 年之后,前提被改写了
- 常见说法订正
- 速查表
- 复习重点
核心概念 CoT 之后的两年,研究并没有沿一条线推进,而是从同一个起点分出三个方向,各自补一块短板:
方向 补的短板 代表 一、让单条链更可靠 链会错,且错得自信 Self-Consistency、Zero-shot CoT 二、让推理有结构 链是线性的,不能试错回退 ToT、Plan-and-Solve、GoT 三、让推理接地 链封闭在模型内部,事实没有来源 ReAct、Reflexion Agent 不是其中某一支的延续,而是三支的合流。
⚠️ 先说清这份分类的性质:这三条分支是本笔记为了教学而做的归类,不是学术界公认的、正交且完备的谱系。它的用处是「看到一个新范式,快速判断它在补哪块短板」;它的局限是:多数工作同时落在不止一支(Reflexion 既有反馈也有记忆,ToT 也依赖评估信号),也有工作三支都不沾。拿它当思考脚手架可以,写进论文或对外文档时别说成公认分类。
一、为什么这段背景值得单独理清?
因为大部分中文资料把它讲成了一条时间直线:
❌ 常见的错误叙事
CoT → Zero-shot CoT → Self-Consistency → ReAct → ToT → Agent
(暗示:后面的比前面的强,是逐代替换关系)这个叙事有两个具体后果:
- 误判技术关系。 会以为 ToT "比" ReAct 新所以更好,实际上它们不在同一个层面,可以叠加使用(ReAct 的每一步 Thought 内部完全可以跑 ToT)。
- 误判架构选型。 会以为选了新范式就自动解决了旧问题。实际上方向二解决不了事实接地问题,方向三也解决不了搜索空间问题——它们补的是不同的洞。
正确的图景是分叉,不是替换:
读图顺序:从上往下看主干(Scratchpad → CoT → 分叉 → Agent → RL 内化),横向看三个泳道各自的主张。图中最值得记住的是中层那三个虚线框——它们不是三代技术,是三个正交的改进维度。
二、起点其实不是 CoT
CoT 常被当成从零开始的发明,但"把中间计算写出来"这个动作,在它之前两个月就已经被系统研究过。
Scratchpad(《Show Your Work: Scratchpads for Intermediate Computation with Language Models》,Nye 等,arXiv 2112.00114,2021-11-30)明确提出:训练 Transformer 把中间计算步骤输出到一块"草稿纸"上,在算术、多项式求值、程序执行追踪等任务上取得大幅提升。论文摘要的原话是这个方法能 "dramatically improve" 模型执行多步计算的能力。
🆚 Scratchpad 与 CoT 的关键差别不在思想,在手段:
| 维度 | Scratchpad (2021.11) | CoT (2022.01) |
|---|---|---|
| 核心思想 | 输出中间计算步骤 | 输出中间推理步骤 |
| 实现手段 | 训练模型这么做(微调) | 提示模型这么做(few-shot,零训练) |
| 任务范围 | 偏程序化计算(加法、程序执行) | 算术 + 常识 + 符号推理 |
| 门槛 | 需要标注数据和训练资源 | 写 8 个示例即可 |
为什么是 CoT 而不是 Scratchpad 引爆了这个领域 因为门槛。Scratchpad 要求你有能力微调一个模型;CoT 只要求你会写 Prompt。当一项能力的获取成本从"训练"降到"写几个例子",使用它的人数会差几个数量级。
这个模式后面还会重演一次——见第七节,只不过方向是反的。
三、CoT 真正的转折点意义是什么?
不是"提升了推理准确率"。准确率提升只是表象。
真正的转折是:「中间推理步骤」从模型内部不可见的隐式计算,变成了输出序列里一段可操作的文本。
一旦它成为文本对象,就自动获得了四种可能性:
可以被采样 → 生成多条,比较、投票 → Self-Consistency
可以被评估 → 给中间状态打分,决定是否继续 → Tree of Thoughts
可以被中断 → 停在某一步,插入外部信息 → ReAct
可以被存储 → 写进记忆,下次任务复用 → Reflexion后面三条分叉全部建立在这四个可能性之上。这才是 CoT 被称为 Agent 前置条件的原因——不是因为 Agent 需要模型"会推理",而是因为 Agent 需要一个能被外部程序介入的推理过程。
💡 一个判断新范式的通用视角 看到任何一个新的 Agent 推理范式,先问:它在对这段中间文本做什么操作?
采样比较、打分剪枝、中途插入观察、跨轮次存取——基本逃不出这四类,以及它们的组合。这比记名字有用得多。
四、三条分叉分别在补什么短板?
方向一:让单条链更可靠(仍封闭在文本内)
短板:一条链上任何一步错了,后面全跟着错,而且模型语气毫不动摇。
- Self-Consistency(2022-03-21,arXiv 2203.11171):采样多条链,对最终答案取最一致的那个。GSM8K +17.9%。
- Zero-shot CoT(2022-05-24,arXiv 2205.11916):
Let's think step by step,去掉写示例的成本。MultiArith 17.7% → 78.7%。
⚠️ 这两者的先后关系经常被讲反 错误说法: "Zero-shot CoT 之后,人们发现单链不可靠,于是提出了 Self-Consistency。"
实际时间: Self-Consistency 2022-03-21,Zero-shot CoT 2022-05-24。Self-Consistency 早两个月。
原因: 二者从 CoT 出发解决的是完全不同的问题——一个改解码策略(怎么选答案),一个改触发方式(怎么让它开始推理)。没有依赖关系,自然也没有先后。
正确理解: 并行分支。写技术文档时不要用"于是""进而"把它们串成因果。
这一支的天花板很明确:无论采样多少条链,所有事实仍然来自模型的训练记忆。问它今天的股价,四十条链会一致地编出同一个数字——一致性不等于正确性。
方向二:让推理有结构(链 → 树 → 图)
短板:链是线性的,走错了不能退回来重选。
- Tree of Thoughts(Yao Shunyu 等,2023-05-17,arXiv 2305.10601,NeurIPS 2023):论文指出标准 LLM 推理被困在 "token-level, left-to-right decision-making" 里。ToT 让模型对中间状态打分,支持回溯(backtracking)与前瞻(lookahead)。Game of 24 上,GPT-4 用标准提示成功率 4%,用 ToT 达到 74%。
- Plan-and-Solve(Wang Lei 等,2023-05-06,arXiv 2305.04091):先制定计划把任务拆成子任务,再按计划逐个执行。它针对的是 Zero-shot CoT 的三类具体错误:计算错误、遗漏步骤、语义误解。
- Graph of Thoughts(Besta 等,2023-08-18,arXiv 2308.09687):把思考单元作为顶点、依赖作为边,组织成任意图。排序任务上比 ToT 质量提升 62%,同时成本降低 31% 以上。
⚠️ 别把 Self-Consistency 和 ToT 混为一谈 两者都"有多条推理路径",但机制完全不同:
维度 Self-Consistency Tree of Thoughts 路径之间 相互独立,并行采样,互不知情 共享搜索树,有父子关系 中途干预 无。跑完才比 有。对中间状态评估、剪枝 能否回退 不能 能(backtracking) 选择依据 最终答案的多数票 中间状态的价值评估 本质 一种解码策略 一种搜索算法 一句话记:Self-Consistency 是投票,ToT 是搜索。 前者事后比较,后者过程干预。
方向三:让推理接地(走出模型内部)
短板:前两个方向再怎么优化,推理都封闭在模型的参数记忆里,无法获取外部真实信息,也无法验证自己。
- ReAct(Yao Shunyu 等,2022-10,arXiv 2210.03629,ICLR 2023):交替生成推理轨迹与行动指令,
Thought → Action → Observation → Thought。关键在于Observation是工具返回的真实结果,不是模型生成的。详见 ReAct 范式。 - Reflexion(Shinn Noah 等,2023-03-20,arXiv 2303.11366):智能体对任务反馈进行语言层面的反思,把反思文本存入情景记忆缓冲区,下一轮任务时读取。论文称之为 "verbal reinforcement learning"——不更新权重,用自然语言实现试错学习。HumanEval 上达到 91% pass@1(同期 GPT-4 为 80%)。
⚠️ Reflexion 放在「方向三」是本笔记的取舍,不是它的定位 严格说,Reflexion 的三要素是反馈(Evaluator)、语言反思(Self-Reflection)、跨 trial 记忆——它解决的是「上一次失败的教训怎么带到下一次」,不是「事实从哪来」。它完全可以在一个不调用任何外部工具、纯靠内部评估的任务上运行,那样就和「接地」毫无关系。
本笔记把它归到方向三,理由是它引入了跨轮次的状态,和方向一、二那种一次性封闭推理确实不同。但如果按「补了什么短板」来分,把它单列成第四支:反馈与经验积累更准确。
这正是开头提醒过的:三分支是脚手架,遇到落在缝里的工作,以工作本身的机制为准。详见 Reflexion 反思式自我纠错。
五、为什么方向三才是 Agent 的分水岭?
因为前两个方向再强,做的都还是同一件事的优化:给定输入,在模型内部把答案算得更准。
方向三改变了问题的定义:
方向一、二: 输入 ──[模型内部推理]──→ 输出
(一次性的、封闭的、无状态的)
方向三: 输入 ──推理──→ 行动 ──→ 外部世界
↑ │
└──── 观察 ────┘
(循环的、开放的、有状态的)三个质变同时发生:
- 事实有了来源。 结论可以追溯到某次工具调用的真实返回,而不只是模型的说辞。这直接回应了 CoT 思维链 第六节讲的不忠实性问题——CoT 的自述不可信,但工具的返回值可查。
- 过程有了状态。 有了 Observation,就有了"当前已知什么"这个需要维护的状态,于是才需要记忆。
- 执行有了不确定长度。 循环几轮由任务决定,于是才需要停止条件、步数上限、循环检测——ReAct 范式 里讲的那些工程问题,全部是从这里冒出来的。
Reflexion 补上的是另一维 ReAct 让单次任务内部有了纠错回路(观察 → 重新思考)。但任务结束、上下文清空,教训就没了——下次遇到同样的坑还会再踩。
Reflexion 把失败经验以自然语言写入情景记忆,实现跨轮次的经验积累。所以它对应的 Agent 组件不是"推理",是 Memory。这也是为什么把它归到方向三而不是方向二:它处理的是与外部(历史)的交互,不是推理的内部结构。
六、这些分支如何汇流成 Agent?
今天一个完整 Agent 的各个模块,大致可以对应回上面的分支——这里说的是「这一支贡献了它在 LLM 语境下的做法」,不是「这个概念由这篇论文发明」:
| Agent 组件 | 对应哪一支 | 该支的代表工作 |
|---|---|---|
| Reasoning(推理内核) | 起点 | CoT |
| Planning(任务规划) | 方向二 | Plan-and-Solve、ToT |
| Tool Calling(工具调用) | 方向三 | ReAct |
| Memory(记忆) | 方向三 | Reflexion |
| 结果校验 / 多路裁决 | 方向一 | Self-Consistency |
⚠️ 别把这张表读成「Agent 组件起源于这些论文」 错误说法: "Agent 的规划能力来自 ToT,工具调用来自 ReAct,记忆来自 Reflexion。"
实际情况: 规划、工具使用、记忆、校验是智能体研究几十年来的基本构件,远早于这几篇 LLM 论文——自动规划(STRIPS 等)可以追到上世纪 70 年代,具身智能体与环境交互、黑板架构里的记忆同理。这些论文做的是把已有的构件搬到 LLM 这个新载体上,并找到在语言模型上可行的具体做法,不是发明了这些概念。
同理,ReAct 也不是「Agent 与环境交互」的历史起点。 它是把「推理」与「行动」交错到同一个语言序列里的代表作,这在 LLM 语境下是关键一步;但智能体感知—决策—行动的循环,在它之前早就是标准范式了。
为什么要较真: 把这张表当成起源表,会让人误以为「读完这五篇就掌握了 Agent 的全部理论基础」,从而忽略规划、控制、状态机、可靠性工程里大量早已成熟的成果——而工程上真正会踩的坑,很多恰恰在那些老问题里。
💡 它们是可叠加的,不是互斥的 常见的实际组合:
- Plan-and-Execute 架构 = 方向二做外层规划 + 方向三做内层执行。规划器把任务拆成步骤列表,每个步骤交给一个 ReAct 循环去完成。
- ReAct + Self-Consistency = 在关键决策步采样多条 Thought,投票决定下一个 Action。
- ReAct + ToT = 单步 Thought 内部跑树搜索,选出最优 Action。
判断该叠哪个,看你的瓶颈在哪:答案不稳 → 方向一;任务长、容易迷路 → 方向二;事实错误、需要实时数据 → 方向三。
⚠️ Plan-and-Execute 不是论文范式,是工程命名 常见错误: 在技术文档里写"Plan-and-Execute(Wang et al., 2023)",或把它与 ToT、ReAct 并列为学术范式。
实际情况: Plan-and-Execute 是 LangChain 的架构实现命名(思路上受 BabyAGI 等自主智能体项目影响)。学术上与之对应的论文是 Plan-and-Solve(Wang Lei 等,arXiv 2305.04091)。
为什么要区分: 两者的关注点其实不同——Plan-and-Solve 是一种提示策略(在单次生成里先计划后求解),Plan-and-Execute 是一种系统架构(规划器与执行器是分离的组件,可以用不同模型、可以重新规划)。混用会让人以为论文里有现成的架构方案。
正确写法: 引用提示策略写 Plan-and-Solve 并附 arXiv 号;描述系统架构写 Plan-and-Execute 并注明是框架实现。
七、2024 年之后,前提被改写了
上面整条线索有一个共同的隐含前提:
模型的推理能力是固定的,我们能做的是在推理时(inference-time)用提示和外部结构去"释放"它。
这个前提在 2024 年后不再成立。
o1 与 DeepSeek-R1 走的是相反的路:用强化学习把长思维链直接训练进模型权重。DeepSeek-R1 的论文(发表于 Nature,2025)给出的证据很硬:
- R1-Zero 完全跳过监督微调,在 DeepSeek-V3 基座上直接做大规模 RL(GRPO 算法),奖励是规则化的——答案是否正确 + 是否遵守
<think>...</think>格式。注意奖励不监督推理链本身,只看最终答案和格式;正因为没人规定它怎么想,才有下一条。 - 训练过程中,自我验证、反思、动态调整策略等复杂推理行为自发涌现,没有任何人显式教它,包括那个被反复引用的 "aha moment"——模型自己学会停下来重新评估。
- AIME 2024 上 average pass@1 从 15.6% → 77.9%(Nature 正式版数字;流传较广的 71.0% 出自早期 arXiv 版),自洽解码下达到 86.7%。
⚠️ 这一整段说的是 R1-Zero,不是 DeepSeek-R1 纯 RL、无 SFT、涌现 aha moment,这些全部属于 R1-Zero——一个用来验证「纯 RL 能否激发推理」的研究性模型。正式发布的 DeepSeek-R1 走的是多阶段流程:先用少量高质量长 CoT 数据做冷启动 SFT,再 RL,再拒绝采样 + SFT,再第二轮 RL。原因是 R1-Zero 分数虽高,但输出可读性差、中英文混杂。
说「DeepSeek-R1 是纯 RL 训出来的」是这两年最常见的误传之一。
这件事对本篇脉络的影响 回看第二节的 Scratchpad 与 CoT:当年的走向是训练 → 提示(降低门槛,于是普及)。
2024 年后的走向是提示 → 训练(把已被验证有效的提示模式,吸收成训练目标)。
这是 LLM 发展中反复出现的模式:一种提示技巧一旦被证明稳定有效,最终会被内化进模型本身。 指令遵循(instruction following)、工具调用(function calling)都走过同样的路——先是精心设计的 Prompt 模板,后来变成模型的原生能力。CoT 是第三个。
💡 对 Agent 开发者的三条实际影响
- 方向一的价值在下降。 推理模型内部已经在做自我验证和多路探索,外挂 Self-Consistency 的边际收益变小、成本却翻倍。
- 方向二的价值在分化。 模型内部的"思考"已能完成局部搜索,但跨工具调用、跨长时程的任务规划仍需要外部显式的规划器——因为那部分不在模型的单次生成范围内。
- 方向三的价值不受影响,反而更重要。 RL 再怎么训练,模型也不可能知道你数据库里的实时数据。接地永远只能靠工具。这一支是 Agent 里唯一无法被模型能力提升所替代的部分。
常见说法订正
| 常见说法 | 是否准确 | 订正 |
|---|---|---|
| CoT → Zero-shot CoT → Self-Consistency 逐代改进 | ❌ 错误 | Self-Consistency(2022-03)早于 Zero-shot CoT(2022-05),且二者是并行分支 |
| CoT 是「把中间步骤写出来」这一思想的起源 | ⚠️ 不准确 | Scratchpad(2021-11,arXiv 2112.00114)更早;CoT 的贡献是把它从训练降级为提示 |
| 「Reflection」是一种 Agent 范式 | ⚠️ 术语不准 | 论文里的范式叫 Reflexion(Shinn et al., 2303.11366),核心是言语强化学习 + 情景记忆 |
| Plan-and-Execute 出自某篇论文 | ❌ 错误 | 学术对应物是 Plan-and-Solve(2305.04091);Plan-and-Execute 是 LangChain 的架构命名 |
| ToT 就是「同时探索多条推理路径」 | ⚠️ 不完整 | 多路径是 Self-Consistency。ToT 的关键是状态评估 + 回溯 + 前瞻,本质是搜索 |
| ToT 比 ReAct 新,所以更先进 | ❌ 错误 | 不在同一层面,可叠加使用;ReAct(2022-10)实际上比 ToT(2023-05)更早 |
| CoT 的价值是「无需训练即可提升推理」 | ⚠️ 已过时 | 2022 年成立;2024 后 o1/R1 用 RL 将长 CoT 内化进权重,CoT 成为训练目标 |
| Agent 是 CoT 的直接延续 | ⚠️ 不完整 | Agent 是三条分叉的合流,且只有方向三(ReAct/Reflexion)带来了范式质变 |
| 有了推理模型,Agent 框架就不需要了 | ❌ 错误 | 模型能力提升可替代方向一、部分替代方向二,但接地永远需要工具(方向三) |
| 本篇的「三条分支」是学术界的标准分类 | ❌ 错误 | 是本笔记的教学归类。多数工作跨支,也有工作三支都不属于 |
| Planning / Tool / Memory 这些组件源自这几篇 LLM 论文 | ❌ 错误 | 它们是几十年的智能体基本构件;这些论文贡献的是在 LLM 上的具体做法 |
| ReAct 是 Agent 与环境交互的起点 | ❌ 错误 | 感知—决策—行动循环远早于它;ReAct 的贡献是把推理与行动交错进同一个语言序列 |
| DeepSeek-R1 是纯 RL、无 SFT 训出来的 | ❌ 错误 | 那是 R1-Zero;正式 R1 是冷启动 SFT → RL → 拒绝采样 SFT → 再 RL |
| R1-Zero 在 AIME 2024 上是 15.6% → 71.0% | ⚠️ 过时 | 71.0% 出自早期 arXiv 版;Nature 正式版为 77.9% |
| 有了工具轨迹就能证明模型的推理是可信的 | ❌ 错误 | 轨迹能证明调用了什么、返回了什么,不能证明模型写出的 Thought 忠实于其内部决策 |
速查表
| 节点 | 时间 | arXiv | 一句话定位 |
|---|---|---|---|
| Scratchpad | 2021-11 | 2112.00114 | 前身:训练模型输出中间计算 |
| Chain-of-Thought | 2022-01 | 2201.11903 | 转折点:中间步骤成为可操作的文本对象 |
| Self-Consistency | 2022-03 | 2203.11171 | 方向一:多链投票,改解码策略 |
| Zero-shot CoT | 2022-05 | 2205.11916 | 方向一:一句触发语,改触发方式 |
| ReAct | 2022-10 | 2210.03629 | 方向三:推理 ⇄ 工具 ⇄ 真实观察(分水岭) |
| Reflexion | 2023-03 | 2303.11366 | 方向三:失败经验写入情景记忆 |
| Plan-and-Solve | 2023-05 | 2305.04091 | 方向二:先拆计划再执行 |
| Tree of Thoughts | 2023-05 | 2305.10601 | 方向二:状态评估 + 回溯 + 前瞻 |
| Graph of Thoughts | 2023-08 | 2308.09687 | 方向二:思考单元组织成任意图 |
| o1 / DeepSeek-R1 | 2024–2025 | 2501.12948 | 前提反转:RL 把长 CoT 内化进权重。纯 RL 的是 R1-Zero,正式 R1 有冷启动 SFT |
复习重点
复习重点 0. 先记住这份分类的地位:三分支是本笔记的教学脚手架,不是公认谱系;表里的「来自哪一支」说的是 LLM 语境下的做法来源,不是概念的发明者。
- 一句话说清整条脉络:CoT 把中间推理步骤变成了可操作的文本对象,此后研究分出三支——让链更可靠(投票)、让推理有结构(搜索/规划)、让推理接地(工具/记忆)——Agent 是三支的合流。
- 最容易记错的因果:Self-Consistency 早于 Zero-shot CoT,二者并行;ReAct 早于 ToT,二者不同层面。不要用时间顺序推导优劣关系。
- 最需要理解的分水岭:只有方向三改变了问题定义——从"一次性封闭求解"变成"循环开放交互"。事实来源、状态维护、不定长执行这三个质变全部源于此。
- 最容易混的两个概念:Self-Consistency 是投票(路径独立、事后比较),ToT 是搜索(共享树、中途评估剪枝、可回溯)。
- 最容易写错的引用:Reflexion 不是 Reflection;Plan-and-Execute 是框架命名,论文叫 Plan-and-Solve。
- 判断新范式的通用方法:问它对中间推理文本做什么操作——采样比较 / 打分剪枝 / 插入观察 / 跨轮存取,基本不出这四类及其组合。
- 对选型的直接指导:答案不稳 → 方向一;任务长易迷路 → 方向二;事实错误、需实时数据 → 方向三。方向三是唯一无法被模型能力提升所替代的。
动手:把自己的项目对号入座
这篇笔记的价值只有落到具体项目上才成立。下面留了一个待填区块。
判断依据是第六节末尾那条规则(看瓶颈,不看时髦程度),难点在于瓶颈往往不止一个,而叠加范式是有成本的——每加一层都会增加延迟、token 消耗和调试难度。
待填:我的 Agent 属于哪一支? 当前项目在做什么:
最主要的失败模式是什么:(答案不稳定 / 长任务中途跑偏 / 事实错误或数据过时 / 同样的错反复犯)
据此应该补哪个方向,为什么:
明确决定「不」引入哪个方向,为什么:
一句话总结 这段历史真正的教训不是"谁提出了什么",而是方向三揭示的那件事:模型能力可以靠训练不断提升,但模型永远不知道它训练数据之外的世界。所以无论推理模型进化到哪一步,Agent 的核心始终是那个把真实观察喂回推理的闭环。